package com.example.sentinel.exception;

import lombok.Data;

/**
 * 全局返回类
 */
@Data
public class R<T> {

    /**
     * 请求状态码
     */
    private  Integer code;
    /**
     * 请求消息
     */
    private  String msg;

    /**
     * 参数
     */
    private T data;

    /**
     * 失败自定义返回
     * @param code 状态码
     * @param msg 消息
     * @return
     */
    public static R error(Integer code, String msg) {
        R<Object> r = new R<>();
        r.setCode(code);
        r.setMsg(msg);
        r.setData(null);
        return r;
    }

    /**
     * 成功返回
     * @param code 成功状态码
     * @param msg 成功消息
     * @param data 实体
     * @param <T> 泛型
     * @return
     */
    public static <T> R<T> success(Integer code, String msg, T data) {
        R<T> r = new R<>();
        r.setCode(code);
        r.setMsg(msg);
        r.setData(data);
        return r;
    }

    /**
     * 成功返回
     * @param code 成功状态码
     * @param msg 成功消息
     * @param <T> 泛型
     * @return
     */
    public static <T> R<T> success(Integer code, String msg) {
        R<T> r = new R<>();
        r.setCode(code);
        r.setMsg(msg);
        return r;
    }
}
